Illustrate extension rendering
authorMatthias Clasen <mclasen@redhat.com>
Tue, 23 Nov 2010 23:00:43 +0000 (18:00 -0500)
committerCarlos Garnacho <carlosg@gnome.org>
Sat, 4 Dec 2010 14:39:39 +0000 (15:39 +0100)
docs/reference/gtk/images/extensions.png [new file with mode: 0644]
docs/reference/gtk/images/focus.png [new file with mode: 0644]
gtk/gtkstylecontext.c
tests/styleexamples.c

diff --git a/docs/reference/gtk/images/extensions.png b/docs/reference/gtk/images/extensions.png
new file mode 100644 (file)
index 0000000..f41d710
Binary files /dev/null and b/docs/reference/gtk/images/extensions.png differ
diff --git a/docs/reference/gtk/images/focus.png b/docs/reference/gtk/images/focus.png
new file mode 100644 (file)
index 0000000..583d292
Binary files /dev/null and b/docs/reference/gtk/images/focus.png differ
index 78957e6ca19d09d16912694d847e8eb56174f2d7..e5bd4cf68310c63e04111299fd6a5bf189a2e7ab 100644 (file)
@@ -3159,6 +3159,10 @@ gtk_render_expander (GtkStyleContext *context,
  * @height: rectangle height
  *
  * Renders a focus indicator on the rectangle determined by @x, @y, @width, @height.
+ * <example>
+ * <title>Typical focus rendering</title>
+ * <inlinegraphic fileref="focus.png" format="PNG"/>
+ * </example>
  *
  * Since: 3.0
  **/
@@ -3357,6 +3361,11 @@ gtk_render_frame_gap (GtkStyleContext *context,
  * defined by @x, @y, @width, @height. The side where the extension
  * connects to is defined by @gap_side.
  *
+ * <example>
+ * <title>Typical extension rendering</title>
+ * <inlinegraphic fileref="extensions.png" format="PNG"/>
+ * </example>
+ *
  * Since: 3.0
  **/
 void
index b66add59aca9545ad4b72c63284a68327a85302c..6b65ba86bd9ff05d4c5c37de05301e8a4e4a30b1 100644 (file)
@@ -226,7 +226,44 @@ draw_cb_slider (GtkWidget *widget, cairo_t *cr)
   return TRUE;
 }
 
+static gboolean
+draw_cb_focus (GtkWidget *widget, cairo_t *cr)
+{
+  GtkStyleContext *context;
+
+  context = gtk_widget_get_style_context (widget);
+
+  gtk_style_context_save (context);
+
+  gtk_render_focus (context, cr, 12, 12, 50, 50);
+
+  gtk_style_context_restore (context);
+
+  return TRUE;
+}
+
+static gboolean
+draw_cb_extension (GtkWidget *widget, cairo_t *cr)
+{
+  GtkStyleContext *context;
+
+  context = gtk_widget_get_style_context (widget);
+
+  gtk_style_context_save (context);
 
+  gtk_style_context_add_class (context, "notebook");
+  gtk_style_context_add_region (context, GTK_STYLE_REGION_TAB, 0);
+
+  gtk_style_context_set_state (context, 0);
+  gtk_render_extension (context, cr, 26, 12, 24, 12, GTK_POS_BOTTOM);
+  gtk_render_extension (context, cr, 12, 26, 12, 24, GTK_POS_RIGHT);
+  gtk_render_extension (context, cr, 26, 52, 24, 12, GTK_POS_TOP);
+  gtk_render_extension (context, cr, 52, 26, 12, 24, GTK_POS_LEFT);
+
+  gtk_style_context_restore (context);
+
+  return TRUE;
+}
 
 static char *what;
 
@@ -249,6 +286,10 @@ draw_cb (GtkWidget *widget, cairo_t *cr)
     return draw_cb_activity (widget, cr);
   else if (strcmp (what, "slider") == 0)
     return draw_cb_slider (widget, cr);
+  else if (strcmp (what, "focus") == 0)
+    return draw_cb_focus (widget, cr);
+  else if (strcmp (what, "extension") == 0)
+    return draw_cb_extension (widget, cr);
 
   return FALSE;
 }